Ext.define('IHC.controller.ihc.processos.IHC004ListController', { 
	extend : 'Ext.app.Controller',
	
	requires : [
		'IHC.model.AtividadeColaborador',
		'IHC.model.Marcacao',
		'IHC.store.ihc.processos.IHC004AtividadeColaborador',
		'IHC.store.ihc.processos.IHC004Marcacao',
		'IHC.view.ihc.processos.IHC004ListView',
		'IHC.view.ihc.processos.IHC004MarcacaoListView',
		'IHC.view.ihc.processos.IHC004MarcacaoWindow',
		'IHC.view.ihc.IHC004HelpWindow'
	],
	
	stores: [
		'IHC.store.ihc.processos.IHC004AtividadeColaborador',
		'IHC.store.ihc.processos.IHC004Marcacao'
	],
	
	models: [
		'IHC.model.AtividadeColaborador',
		'IHC.model.Marcacao'
	],
	
	views: [
		'IHC.view.ihc.processos.IHC004ListView',
		'IHC.view.ihc.processos.IHC004MarcacaoListView',
		'IHC.view.ihc.processos.IHC004MarcacaoWindow',
		'IHC.view.ihc.IHC004HelpWindow'
	],
	
	formModule: 'IHC.controller.ihc.processos',
	
	formName: 'IHC004',
	
	suffixName: '',
	
	mixins: [
		'InsoftExtUi.ux.mixins.controller.CrudListMixin'
	],
	
	refs: [{ 
		selector: 'ihc004-list',
		xtype: 'ihc004-list',
		ref: 'mainGrid',
		autoCreate: true
	}, {
		selector : "button[action=iniciar-atividade]",
		ref : "btnIniciar"
	}, {
		selector : "button[action=finalizar-atividade]",
		ref : "btnFinalizar"
	}],
	
	init: function() {
		var me = this;
		
		me.control({
			"button[action=iniciar-atividade]" : {
				click : me.iniciarAtividade
			},
			"button[action=finalizar-atividade]" : {
				click : me.finalizarAtividade
			},
			"button[action=detalhe-atividade]" : {
				click : me.detalheAtividade
			},
			"#ihc004-list" : {
				selectionchange : me.atualizaAtividade
			},
	        "#ihc004-list button[action=helpRecord]" : {
	        	click : me.helpMarcacao
			}
		});
		
		if (!me.inited) {
			me.bindDefaultActions('#ihc004-list');
			me.recordStore = me.getStore('IHC.store.ihc.processos.IHC004AtividadeColaborador');
		}
		
		me.inited = true; 
	},
	
	actionIndex : function() {
		var me = this,
			manager = me.getLocaleManager(),
			title = manager.get('ihc004.mainPanel.title');
		
		me.recordStore.load();
		me.application.addTab(this.getMainGrid(), 'IHC004', title);
		manager.applyLocalesFor('#IHC004Tab');
	},
	
	iniciarAtividade : function(button, event, opts) {
		var me = this,
			store = me.getStore("IHC.store.ihc.processos.IHC004AtividadeColaborador"),
			atividade = me.selectRecord(me.getLocaleManager());
		
		if (atividade) {
			Ext.Ajax.request({
				url : "../marcacao/iniciar",
				params : {
					idAtividade : atividade.get("id")
				},
				success : function() {
					store.reload({
						callback : function() {
							me.atualizaBotoes(true);
						}
					});
				}
			});
		} else {
			// TODO
		}		
	},
	
	finalizarAtividade : function(button, event, opts) {
		var me = this,
			store = me.getStore("IHC.store.ihc.processos.IHC004AtividadeColaborador"),
			atividade = me.selectRecord(me.getLocaleManager());
	
		if (atividade) {
			Ext.Ajax.request({
				url : "../marcacao/finalizar",
				params : {
					idAtividade : atividade.get("id")
				},
				success : function() {
					store.reload({
						callback : function() {
							me.atualizaBotoes(false);
						}
					});
				}
			});
		} else {
			// TODO
		}		
	},
	
	detalheAtividade : function(button, event, opts) {
		var me = this,	
			manager = me.getLocaleManager(),
			record = me.selectRecord(manager);
		
		if (record) {
			var window = me.getView(me.views[2]).create();
			manager.applyLocalesFor('#ihc004-marcacao-window');
			
			var store = me.getStore("IHC.store.ihc.processos.IHC004Marcacao");
			
			store.proxy.extraParams = {
				"extraFilter.atividadeColaborador.id" : record.get("id")
			};
			
			store.load({
				callback : function() {
					window.show();			
				}
			});
		}
	},
	
	atualizaAtividade : function() {
		var me = this,
			store = me.getStore("IHC.store.ihc.processos.IHC004AtividadeColaborador"),
			atividade = me.selectRecord(me.getLocaleManager());
		
		if (atividade) {
			Ext.Ajax.request({
				url : "../marcacao/atividadeIniciada",
				params : {
					idAtividade : atividade.get("id")
				},
				success : function(response) {
					var size = parseInt(Ext.decode(response.responseText).size);
					
					if (size > 0) {
						me.atualizaBotoes(true);
					} else {
						me.atualizaBotoes(false);
					}
				}
			});
		}		
	},
	
	atualizaBotoes : function(b) {
		var me = this;
		me.getBtnIniciar().setDisabled(b);
		me.getBtnFinalizar().setDisabled(!b);
	},
	
	actionEdit : function() {},
	
    helpMarcacao : function() {
    	var me = this,
    		window = me.getView('IHC.view.ihc.IHC004HelpWindow').create();
    	
    	window.show();
    }
	
});
